package typydanych;

public class Wektor {

	private float[] wektor;
	private byte etykieta;
	private final int rozmiar;
	private boolean znormalizowany;

	public Wektor(int rozmiar) {
		this.rozmiar = rozmiar;
		wektor = new float[rozmiar];
		etykieta = -1;
		znormalizowany = false;
	}
	
	

	public boolean isZnormalizowany() {
		return znormalizowany;
	}



	public float[] getWektor() {
		return wektor;
	}

	public void setWektor(float[] wektor) {
		this.wektor = wektor;
	}

	public byte getEtykieta() {
		return etykieta;
	}

	public void setEtykieta(byte etykieta) {
		this.etykieta = etykieta;
	}

	@Override
	public String toString() {
		StringBuilder str = new StringBuilder("<");
		for (int i = 0; i < rozmiar - 1; i++) {
			str.append(wektor[i]).append(",");
		}
		str.append(wektor[rozmiar - 1]).append(">");
		if (etykieta > -1) {
			str.append("[").append(etykieta).append("]");
		}

		return str.toString();
	}

	public void normalizuj() {

		//wypiszWektor();
		float ratio = 0.0f;
		for (int j = 0; j < rozmiar; j++) {
			ratio += wektor[j] * wektor[j];
		}
		ratio = (float) Math.sqrt(ratio);
		
		for (int i = 0; i < rozmiar; i++) {
			this.wektor[i] = wektor[i] / ratio;
		}
		this.znormalizowany = true;
		//wypiszWektor();
	}
	
	private void wypiszWektor(){
		System.out.print("Wektor: ");
		for (float wartosc : this.wektor) {
			System.out.print(wartosc+" | ");
		}
		System.out.println("");
	}

}
